import subprocess
import time
import os

from TEST1.Head.DataFrom import xls

# 灰色字体
def gray(s, end='\n'):
   print(f'\033[0;0;37m {s}\033[0m', end=end)

# 文件路径规范
fp = './log.txt'    # 全日志
tmp = './tmp.txt'   # 分拣后日志
excel = './1.xls'
# 日志情况记录，可以增删控制是否记录相关等级记录
tip_num = {'D': 0, 'I': 0, 'W': 0, 'E': 0, }

# 初始化
last = 0
ex = xls(excel)
try:
    os.remove(fp)
    os.remove(tmp)
except:
    pass
with open(fp, 'w'):
    pass
ex.new('1.xls')
# os.system('adb logcat -c')  # '''在需要开启的时候开启，此处用于清空以往日志'''
# 额外开启另一进程，用于持续更新日志信息
cmd = 'adb logcat >> ' + fp
active = subprocess.Popen(cmd, shell=True)

# 主循环
while True:
    datas = []
    temp = []
    temp_name = []
    # 日志读取，同时记录循环内容
    with open(fp, 'r', encoding='utf-8') as ff:
        ff.seek(last)                   # 移动文件指针至记录
        data = ff.read().split('\n')    # read默认顺序读取[last:]
        last = ff.tell()                # 记录文件指针最后位置

    # 根据读取内容进行处理
    for s in data:
        try:
            tip_num[s[31]] += 1     # 报错等级，常规格式下固定显示于第32位，即31
            gray(s)
            with open(tmp, 'a+', encoding='utf-8') as ff:
                ff.write(s)
        except:                     # 由于任何情况的中断都会跳至此处,
            pass                    # 包括但不限于[字符串非常规，非收录类型]

    # 系统休眠，然后整理并输出数据至excel
    time.sleep(2)
    print(tip_num)
    for i in tip_num:
        temp.append(tip_num[i])
        temp_name.append(i)
    datas.append(temp_name)
    datas.append(temp)
    ex.write(datas, col=0, row=0, flag=1)

